home *** CD-ROM | disk | FTP | other *** search
/ Chip 2007 January, February, March & April / Chip-Cover-CD-2007-02.iso / Pakiet bezpieczenstwa / mini Pentoo LiveCD 2006.1 / mpentoo-2006.1.iso / modules / nessus-2.2.8.mo / usr / lib / nessus / plugins / moonlit_virus.nasl < prev    next >
Text File  |  2005-03-31  |  3KB  |  116 lines

  1. #
  2. # Copyright (C) 2004 KK Liu
  3. #
  4. #
  5. # rev 1.0: MoonLit detection - 07/30/2004
  6. # rev 1.1: Description changes
  7. # rev 1.2: Bug fixed - 10/28/2004 add statement to handle ret << 29 eq 0x80000000 
  8. #
  9.  
  10. if(description)
  11. {
  12.  script_id(15586);
  13.  script_version ("$Revision: 1.3 $");
  14.  name["english"] = "MoonLit Virus Backdoor";
  15.  
  16.  script_name(english:name["english"]);
  17.  
  18.  desc["english"] = "
  19. The system is infected by the MoonLit virus, 
  20. the backdoor port is open.
  21. Backdoor.Moonlit is a Trojan horse program that can 
  22. download and execute files, and may act as a proxy server. 
  23.  
  24. See also : http://securityresponse.symantec.com/avcenter/venc/data/backdoor.moonlit.html
  25.  
  26. Solution : ensure all MS patches are applied as well as the latest AV 
  27.     definitions.
  28. Risk factor : High";
  29.  
  30.  script_description(english:desc["english"]);
  31.  
  32.  summary["english"] = "Detect MoonLit virus";
  33.  script_summary(english:summary["english"]);
  34.  
  35.  script_category(ACT_GATHER_INFO);
  36.  
  37.  script_copyright(english:"This script is Copyright (C) 2004 KK Liu");
  38.  family["english"] = "Backdoors";
  39.  script_family(english:family["english"]);
  40.  exit(0);
  41. }
  42. #=============================================================================
  43. # NASL supports only 2 data type - string & integer, and not "long int" support
  44. # so we need to work around the "sign" issue
  45. #=============================================================================
  46. function doGetPortFromIP(dst)
  47. {
  48.     local_var retval;
  49.     local_var ip;
  50.     
  51.     
  52.     ip = split(dst, sep: ".", keep: 0);
  53.     retval = ip[0]*256*256*256 + ip[1]*256*256 + ip[2]*256 + ip[3]*1;
  54.     #display ('retval = ', retval , '\n');
  55.     MAGIC = 0x6D617468;
  56.  
  57.     retval = ((retval >>> 5)|(retval << 27));
  58.     
  59.     #display ('or-retval = ', retval , '\n');
  60.  
  61.     
  62.     #original cod in C: retval += (retval >= (retval + MAGIC)) ? MAGIC + 1 : MAGIC;
  63.     #display ('retval = ', retval , ', MAGIC =', MAGIC,'\n');
  64.     if ((retval < 0) && (retval + MAGIC >= 0)) MAGIC += 1;
  65.     retval += MAGIC;
  66.     
  67.     #display ('retval+MAGIC = ', retval , '\n');
  68.     
  69.     #KK - 2004-10-28
  70.     #check if retval << 29 eq 0x80000000
  71.     ret2 = retval << 30;
  72.     if (ret2 == 0)
  73.     {
  74.         # 0x80000000 mod 0xFAD9 = 0xB87 = 2951
  75.         return((((retval >>> 3)+ 2951) % 0xFAD9) + 1031);    
  76.     }
  77.     else 
  78.     {
  79.         #ret2 = retval << 29;
  80.         #ret1 = retval >>> 3;
  81.         #display ('val1 = ', ret1, ', val2 =', ret2 , '\n');
  82.         #display ('val1|val2 = ', ret1 | ret2, '\n');
  83.             
  84.         #if result after the shift is negative, int(0x80000000) < 0
  85.         #we add back - 0x80000000 div 0xFAD9 = 33441
  86.  
  87.         #if ((retval >>> 3)|(retval << 29) < 0)
  88.         #display ('-or =' , ((retval >>> 3)|(retval << 29)) - 0xFAD9 * 33441, '\n');
  89.         #else display ('+or =' , ((retval >>> 3)|(retval << 29)), '\n');
  90.         
  91.         if ((retval >>> 3)|(retval << 29) < 0)
  92.             return(((((retval >>> 3)|(retval << 29)) - 0xFAD9 * 41801) % 0xFAD9) + 1031);
  93.         else return((((retval >>> 3)|(retval << 29)) % 0xFAD9) + 1031);
  94.     }
  95. }
  96.  
  97.  
  98. hostip = get_host_ip();
  99. dst = string(hostip);
  100. port = doGetPortFromIP(dst:dst);
  101. #display ('port = ', port, '\n');
  102.  
  103. if ( get_port_state(port) ) 
  104. {
  105.     #req = string("a");
  106.     soc = open_sock_tcp(port);
  107.     if ( soc ) 
  108.     {
  109.         #send(socket:soc, data:req);
  110.         r = recv(socket:soc, length:10);
  111.         if ( r && (strlen(r) == 2) ) security_hole(port); 
  112.     }
  113.  
  114. }
  115.  
  116.